package org.edu.modules.oa.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.edu.modules.oa.entity.VeOaCarInfoEntity;
import org.edu.modules.oa.entity.VeOaCarShiYongEntity;
import org.edu.modules.oa.entity.VeOaCarWeizhangShiguEntity;
import org.edu.modules.oa.mapper.IVeOaCarInfoMapper;
import org.edu.modules.oa.mapper.IVeOaCarWeizhangShiguMapper;
import org.edu.modules.oa.service.IVeOaCarWeizhangShiguService;
import org.edu.modules.oa.vo.VeOaCarJiayouTableVo;
import org.edu.modules.oa.vo.VeOaCarWeizhangShiguVo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;

@Service//备注，扫包的时候自动加载
public class VeOaCarWeizhangShiguImpl extends ServiceImpl<IVeOaCarWeizhangShiguMapper,VeOaCarWeizhangShiguEntity> implements IVeOaCarWeizhangShiguService {
    @Resource//注入mapeper,就可以直接调用mapper
    private IVeOaCarWeizhangShiguMapper iVeOaCarWeizhangShiguMapper;
    @Resource
    private IVeOaCarInfoMapper iVeOaCarInfoMapper;

    @Override
    public HashMap<String, Object> showWeizhangShiguTable(Integer page, Integer pageSize, VeOaCarWeizhangShiguEntity veOaCarWeizhangShiguEntity) {
        HashMap<String,Object>map = new HashMap<>();
        //创建分页的page
        IPage<VeOaCarWeizhangShiguEntity>weizhangPage = new Page<>(page,pageSize) ;
        //创建查询的条件，wrapper是条件综合器
        QueryWrapper<VeOaCarWeizhangShiguEntity>wrapper = new QueryWrapper<>();
        //前台传来的条件
        if(veOaCarWeizhangShiguEntity.getCarName()!=null && veOaCarWeizhangShiguEntity.getCarName()!=""){
            wrapper.like("car_name",veOaCarWeizhangShiguEntity.getCarName().trim());
        }
        if(veOaCarWeizhangShiguEntity.getDriverUser()!=null && veOaCarWeizhangShiguEntity.getDriverUser()!=""){
            wrapper.like("driver_user",veOaCarWeizhangShiguEntity.getDriverUser().trim());
        }
        if(veOaCarWeizhangShiguEntity.getWeishiType()!=null && veOaCarWeizhangShiguEntity.getWeishiType()!=""){
            wrapper.like("weishi_type",veOaCarWeizhangShiguEntity.getWeishiType().trim());
        }
        if(veOaCarWeizhangShiguEntity.getCarId()!=null && veOaCarWeizhangShiguEntity.getCarId()!=0){
            wrapper.eq("car_id",veOaCarWeizhangShiguEntity.getCarId());
        }
        if(veOaCarWeizhangShiguEntity.getWeishiDate()!=null){
            Date date = veOaCarWeizhangShiguEntity.getWeishiDate();
            Calendar calendar = new GregorianCalendar();
            calendar.setTime(date);
            calendar.add(calendar.DATE,1); //把日期往后增加一天,整数  往后推,负数往前移动
            Date nextDay=calendar.getTime(); //这个时间就是日期往后推一天的结果
            wrapper.between("weishi_date",date,nextDay);
        }
        //倒序
        wrapper.orderByDesc("weishi_date");
        //mybatis plus的动态查询方法
        // 条件加上分页查询
        weizhangPage =iVeOaCarWeizhangShiguMapper.selectPage(weizhangPage,wrapper);
        List<VeOaCarWeizhangShiguEntity> list=weizhangPage.getRecords();
        int count =iVeOaCarWeizhangShiguMapper.selectCount(wrapper);
        // 把查出来的东西存到map里面去
        map.put("list",list);
        map.put("count",count);
        return map;
    }

    //删除单条、多条记录
    public int deletById(Integer id) {
        int res = iVeOaCarWeizhangShiguMapper.deleteById(id);
        return res;
    }

    @Override
    //导出
    public List<VeOaCarWeizhangShiguVo> export(VeOaCarShiYongEntity veOaCarShiYongEntity) {
        //创建查询的条件
        QueryWrapper<VeOaCarWeizhangShiguEntity>wrapper = new QueryWrapper<>();
        if(veOaCarShiYongEntity.getCarId()!=null&&veOaCarShiYongEntity.getCarId()!=0){
            wrapper.eq("car_id",veOaCarShiYongEntity.getCarId());
        }
        //查数据库，获取所有数据的集合
        List<VeOaCarWeizhangShiguEntity> list =iVeOaCarWeizhangShiguMapper.selectList(wrapper);
        //集合a是导出Excle的集合用的
        List<VeOaCarWeizhangShiguVo> a=new ArrayList<>();
        for (VeOaCarWeizhangShiguEntity v:list){
            VeOaCarWeizhangShiguVo veOaCarWeizhangShiguVo =new VeOaCarWeizhangShiguVo();
            veOaCarWeizhangShiguVo.setCarId(v.getCarId());
            veOaCarWeizhangShiguVo.setCarName(v.getCarName());
            veOaCarWeizhangShiguVo.setWeishiType(v.getWeishiType());
            //时间类型转换成字符串
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            veOaCarWeizhangShiguVo.setWeishiDate(formatter.format(v.getWeishiDate()));
            veOaCarWeizhangShiguVo.setDriverUser(v.getDriverUser());
            veOaCarWeizhangShiguVo.setWeishiAddress(v.getWeishiAddress());
            veOaCarWeizhangShiguVo.setKoufenNum(v.getKoufenNum());
            veOaCarWeizhangShiguVo.setWeishiPrice(v.getWeishiPrice());
            veOaCarWeizhangShiguVo.setWeishiContent(v.getWeishiContent());
            veOaCarWeizhangShiguVo.setBackInfo(v.getBackInfo());
//            veOaCarWeizhangShiguVo.setCreateTime(formatter.format(v.getCreateTime()));
//            veOaCarWeizhangShiguVo.setUpdateTime(formatter.format(v.getUpdateTime()));
//            veOaCarWeizhangShiguVo.setTerminalId(v.getTerminalId());
//            veOaCarWeizhangShiguVo.setCreateByName(v.getCreateByName());
//            veOaCarWeizhangShiguVo.setUpdateByName(v.getUpdateByName());
            a.add(veOaCarWeizhangShiguVo);
        }
        return a;
    }

    @Override
    //获取车辆表
    public List<VeOaCarInfoEntity> showCarTable() {
        List<VeOaCarInfoEntity>list = iVeOaCarInfoMapper.selectList(null);


        return list;
    }

    @Override
    //添加
    public int addWeizhangShigu(VeOaCarWeizhangShiguEntity veOaCarWeizhangShiguEntity) {
        int num = iVeOaCarWeizhangShiguMapper.insert(veOaCarWeizhangShiguEntity);
        return num;
    }

    @Override
    //查询是否有这个车名
    public VeOaCarInfoEntity selectCarId(String carName) {
//        System.out.println(carName);
        QueryWrapper<VeOaCarInfoEntity> wrapper = new QueryWrapper<>();
        wrapper.eq("car_name", carName.trim());
//        System.out.println(iVeOaCarInfoMapper.selectOne(wrapper));
        return iVeOaCarInfoMapper.selectOne(wrapper);
    }

    @Override
    //修改违章事故
    public int setweizhangShigu(VeOaCarWeizhangShiguEntity veOaCarWeizhangShiguEntity) {
        int num = iVeOaCarWeizhangShiguMapper.updateById(veOaCarWeizhangShiguEntity);
        return num;
    }

    @Override
    //高级搜索
    public HashMap<String, Object> advancedQuery(String advancedQuery) {
        List<VeOaCarWeizhangShiguEntity> veOaCarWeizhangShiguEntitiesList  =iVeOaCarWeizhangShiguMapper.advancedQuery(advancedQuery);
        Integer count = iVeOaCarWeizhangShiguMapper.advancedQueryCount(advancedQuery);
        HashMap<String,Object>map = new HashMap<>();
        // 把查出来的东西存到map里面去
        map.put("list",veOaCarWeizhangShiguEntitiesList);
        map.put("count",count);
        return map;
    }

}
